
new Vue({
    el: '#app',
    mixins: [Save],//组件配置文件，路径/utils/components.js
    data() {
        return {
            dataForm: {
                Purchase_Unit_Price_SerialNumber: '', // 采购价格单流水号（主键）
                Start_Date: '', // 开始日期
                End_Date: '', // 结束日期
                Enterprise_Info_SerialNumber: '', // 企业编号
                Creater_SerialNumber: '', // 创建人
                Create_Datetime: '', // 创建时间
                Row_Status: '0', // 行状态：0:正常 1:删除
                Operation_ID: '', // 操作人
                Operation_Datetime: '', // 操作时间
            },
            childDataForm: [{}], // 子表：价格明细 purchase_unitprice_detail
            articleList: [], // 商品列表
            specificationsList: [], // 规格列表
            type: '0',
        }
    },
    mounted() {
        /**
         * 组件配置文件中自动执行方法
         * 1.this.init(); //初始化文件
         * 2.this.getData(); //仅修改时执行，根据BOM配置属性查询
         */
        let ls_URL = window.location.href;
        this.type = getQueryObject(ls_URL, "type") || '0';

        this.getArticleList();
        this.getSpecificationsList();
    },
    // 在数据加载完成后执行（修改模式下）
    documentLoadFinished() {
        // 如果是添加模式，生成流水号
        if (this.action === 'Add') {
            this.generateSerialNumber();
        }
    },
    methods: {
        // 获取原始数组中的索引（用于表单验证）
        getOriginalIndex(item) {
            return this.childDataForm.indexOf(item);
        },
        // 获取商品列表
        getArticleList() {
            generalApi.generalQueryByTableName({
                Data: 'article_info',
                Condition: `Row_Status='0' AND Enterprise_Info_SerialNumber='${getCookie('enterprise')}'`
            }).then(data => {
                this.articleList = data || [];
            }).catch(xhr => {
                this.$message.error("获取商品列表失败，请联系开发者!")
            })
        },
        // 获取规格列表
        getSpecificationsList() {
            generalApi.generalQueryByTableName({
                Data: 'article_specifications',
                Condition: `Row_Status='0'`
            }).then(data => {
                this.specificationsList = data || [];
            }).catch(xhr => {
                this.$message.error("获取规格列表失败，请联系开发者!")
            })
        },
        // 根据商品编号获取对应的规格列表
        getSpecificationsByArticle(articleSerialNumber) {
            if (!articleSerialNumber) {
                return [];
            }
            return this.specificationsList.filter(item => item.Article_SerialNumber === articleSerialNumber);
        },
        // 处理商品变更事件
        handleArticleChange(item) {
            
            this.$set(item, 'Specifications_SerialNumber', '');
            
            // 清除规格编号字段的验证错误
            const originalIndex = this.getOriginalIndex(item);
            this.$nextTick(() => {
                if (this.$refs.childForm && originalIndex !== -1) {
                    this.$refs.childForm.clearValidate(`childDataForm.${originalIndex}.Specifications_SerialNumber`);
                }
            });
        },
        // 生成流水号（Purchase_Unit_Price_SerialNumber）
        generateSerialNumber() {
            const timestamp = Date.now();
            const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
            this.dataForm.Purchase_Unit_Price_SerialNumber = `PUP${timestamp}${random}`;
        },

        async handleSubmit() {
            // 如果是添加模式，且结束日期为空，则设置为"长期"
            if (this.action === 'Add' && (!this.dataForm.End_Date || this.dataForm.End_Date.trim() === '')) {
                this.dataForm.End_Date = '长期';
            }
            
            // 调用父类的提交方法
            const allValid = await this.validateAllForms();
            if (allValid) {
                this.loading = true;
                try {
                    const lJSONObject_DataSet = this.generateStructure();
                    const res = await generalApi.generalSaveByRequestBody({
                        Data: lJSONObject_DataSet
                    })
                    if (res.Status == "success") {
                        this.$message.success("提交成功");
                        window.location.href = './index.html';
                    } else {
                        this.$message.error("提交失败，请重试！");
                    }
                    this.loading = false;
                } catch (error) {
                    console.error(error);
                    this.$message.error("系统错误，请联系开发者!")
                    this.loading = false;
                }
            } else {
                this.$message({
                    message: '存在未填写的必填项！',
                    type: 'warning'
                });
            }
        }
        
    }
})